package com.xinqi.modules.databank.dto.req;

import com.xinqi.common.green.annotation.Text;
import com.xinqi.modules.databank.dto.req.question.CommonDataFileDTO;
import com.xinqi.modules.databank.dto.req.question.CommonVideoPartDTO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 课程资料库主表-请求对象-新增
 *
 * @author: system
 * @date: 2023/03/14
 */
@Data
public class CourseResourceVideoUpdateDTO implements Serializable {

    /** 主键 */
    @Schema(description = "主键")
    private Long id;
    /** 标题 */
    @Text
    @NotEmpty(message = "{course.content.title.not.blank}")
    @Size(min = 0, max = 15, message = "{course.content.title.length.valid}")
    @Schema(description = "标题")
    private String title;
    /** 创建者ID */
    @Schema(description = "创建者ID")
    private Long userId;
    /** 附件 */
    @Schema(description = "附件")
    private String fileurls;
    /** 内容类型1互动课件2资料6互动视频 */
    @Schema(description = "内容类型 1互动课件 2资料 6互动视频")
    private Integer contentType;
    /** 视频集合 */
    @Schema(description = "视频集合")
    private List<CommonDataFileDTO> videoUrls;
    /** 班级ID */
    @Schema(description = "班级ID")
    private Long classId;
    /** 章节ID */
    @Schema(description = "章节ID")
    private Long chapterId;
    /** 是否同步发布到班级 0否 1是 */
    @Schema(description = "是否同步发布到班级 0否 1是")
    private Integer synchro;
    /** 同步的班级ID集合 */
    @Schema(description = "同步的班级ID集合")
    private String classIds;
    /** 允许下载 */
    @Schema(description = "允许下载")
    private Integer download;
    /** 允许拖拽(0不允许,1允许) */
    @Schema(description = "允许拖拽(0不允许,1允许)")
    private Integer allowDrag;
    /** 允许视频倍速(0否1是) */
    @Schema(description = "允许视频倍速(0否1是)")
    private Integer allowSpeedup;
    /** 是否立即发布，0否  1是 */
    @Schema(description = "是否立即发布，0否  1是")
    private Integer nowRelease;
    /** 定时发布，0不定时 1定时 */
    @Schema(description = "定时发布，0不定时 1定时")
    private Integer timing;
    /** 发布时间 */
    @Schema(description = "发布时间")
    private LocalDateTime releaseTime;
    /** 截止时间(各种类型结束时间) */
    @Schema(description = "截止时间(各种类型结束时间)")
    private LocalDateTime endTime;
    /** 发布状态 1未发布 2定时发布 3已发布 4已结束 */
    @Schema(description = "发布状态 1未发布 2定时发布 3已发布 4已结束")
    private Integer status;
    /** 额外字段 */
    @Schema(description = "额外字段")
    private String extra;
    /** 备课区互动视频ID */
    @Schema(description = "备课区互动视频ID")
    private Long prepareVideoId;
    /** 互动环节信息 */
    @Schema(description = "互动环节信息")
    private List<CommonVideoPartDTO> parts;
}
